Project Policies
         
            
         
Projects must be truly interactive, must involve both visual
and auditory content, and must demonstrate an understanding of
the concepts covered in class.  Projects need not involve original
concepts (i.e., you don't need to come up with a novel idea).
    
            1 Topics
    Broadly speaking there are three different kinds of projects,
    applications for general users, applications for content developers,
    and libraries.
      
               1.1 Applications for General Users
      This type of project involves an application that has broad 
      applicability but makes use of both auditory and visual content.
      These kinds of applications tend to be in one of the following
      domains.
        
                  
1.1.1 Advertising and Marketing
        Possible projects in advertising and marketing include: 
        a multimedia market research system, a multimedia catalog, an 
        interactive/animated advertisement system, "I Bleed Purple" 
        images/animations, and a JMU trivia game.
        
  
  
               
                  
1.1.2 Education and Training
        Possible education and training projects include: a classroom
        monitoring system, a course on music/art appreciation, a
        slide-show editor, demonstrations of important concepts from
        mathematics and the sciences (e.g., spread of influenza,
        simulation of a bullet shot at a falling target, simulation of
        inherited traits), demonstration of important concepts from
        computer science (e.g., a simulation of the Internet or a
        particular protocol, demonstration of encryption processes,
        steganography), demonstration of important concepts from the
        social/behavioral sciences (e.g., multimedia microeconomics
        lesson, election results over time, simulation of a room
        evacuation, toll booth or other queueing simulator), a proof
        of concept of an exercise training system or sign language
        training system, a game that teaches fractions, and a game
        that teaches geography.
        
  
  
               
                  
1.1.3 Entertainment
        Possible entertainment projects include: a closed-captioning system,
        a digital photograph
        selector (select, organize, and renumber photos), a Karaoke
        system, a video game, a fish tank in which the fish respond
        to spectators, a system for creating/displaying animated
        greeting cards with personalized audio, an interactive
        children's book, and an interactive science fiction story.
        
  
  
               
                  
1.1.4 Personal and Business Information Services
        Possible projects in the area of personal and business
        information services include: a financial information
        service, an interactive electronic version of The Breeze,
        a traffic information service, a world news service, 
        a sports information service, and an entertainment information service.
        
  
  
               
                  
1.1.5 Travel and Tourism
        Possible travel and tourism projects include: a hotel management
        system, an in-flight tracking system, an interactive model
        of the campus, an interactive model of the Harrisonburg area, an
        interactive model of a National Park
        
             
            
               1.2 Applications for Content Developers
      This type of project involves an application that is targeted at
      a visual content developer or auditory content developer, but still makes
      use of the other kind of content.
      
      Examples include image processing systems (e.g., Gimp), vector
      drawing systems (e.g., Inkscape), sampled auditory content editors
      (e.g., Audacity), and described auditory content editors.
      
             
 
            
               1.3 Libraries
      All semester you've used a library that was written for the textbook.
      As you know, this library is somewhat limited. Projects in this category
      are intended to overcome these limitations.
      
      Examples include libraries for: handling game "levels", for
      saving and retrieving game state in a flexible way, for handling
      additional content formats (either auditory or visual).
      
               
      A successful library project will be usable by students taking this
      course in the future.
      
             
          
         
            
2 Proposal/Initial Product Backlog
    You must get your project approved in advance.
    You must submit proposal that includes: a list of team members,
    a brief description of the product, 
    and a prioritized list of features that you intend to include in the
    product. See the syllabus for due dates.
    
         
            
3 Collaboration
    You may work on the project in groups (of up to 4 people).  The size
    of the project must be commensurate with the size of the group.
    
         
            
4 Materials
            All code, pictures and sounds must be original (i.e.,
    do not plagiarize and do not infringe on any copyrights).  You may
    use code developed/used for lectures or assignments.
    
         
            5 Platform/Environment
    All projects must work as an application Linux/UNIX as it is
    installed in the Departmental classrooms. This means that your code
    must be compiled using v17 of the Java Development Kit (JDK) Standard
    Edition. (Ideally, they should also
    work under Windows and OS-X, but this is not required.)
    
    
               Projects that do not satisfy this requirement will receive a 
    grade of 0.
            
          
         
            
6 Visibility
    All projects will be publicly available on the course WWW site
    (after the presentations).
    
         
            7 Hints and Tips
            
    1. As discussed in the book, the classes we developed for rendering
    and processing auditory content do not use memory efficiently.
    Hence, if you use them you will need to use small audio clips.  If
    you do not need to perform operations on the auditory content, you
    should probably use AudioClip objects directly.
    (Also, remember that there is a typo in the book and you should decorate
    the InputStream as a BufferedInputStream 
    before constructing an AudioInputStream so that it will
    support mark() and reset() even if it
    is inside of a .jar file.) For example, you could
    use the following ClipContent class:
    
            
            
    2. You may need to create some other SimpleContent
    classes to get your application to do what you want it to do.
    The following classes might help get you started:
    
            
            
    which are used in the following demo:
    
  
    
            
            
    3. Regardless of the version of the compiler you are using, you
    can change the "target" runtime using the -source
    and -target options. So, for example, you can compile
    to version 17 as follows:
    
            
      javac -source 17 -target 17 *.java
    
    
            
            
          
         
            8 Submissions
    Groups must submit 
ALL materials associated with their
    projects on the "due date".  They must be submitted by only one member
    of the group.
    
    All code and documentation written for the final project must
    conform to the course style guides.  Submissions that do not
    conform to the course style guide and/or the above guidelines will
    not be accepted.
            
            
               
8.1 Design Materials
      Design materials must be submitted using Canvas. They must be in
      a single .zip file named design.zip.
      
      
            
               
8.2 Source Code
      Source code must be submitted using Canvas. It must be
      packaged appropriately in a file
      named source.zip. It must conform to the course
      style guide.
      
      
            
               
8.3 Executable Code
      Executable code must be submitted using Canvas. It must be in a
      single executable .jar file
      a name that is related
      to the project, but containing no spaces or special characters
      (e.g., BugBattle.jar).
      
      
            
               8.4 External Documentation
      You must submit (using Canvas) a file named 
readme.txt
      that explains how to run the
      application. This file must also contain a
      section that describes all "known bugs".
      
      You must also submit (using Canvas) a .zip file
      named documentation.zip that contains the HTML
      documentation generated by javadoc.
      
             
            
          
         
            9 Presentations
    Each group must present their project in class.  Presentation
    times will 
NOT be announced in advance.  Groups must be
    prepared to present at any time during the "presentation period".
    Presentations will make use of 
ONLY the materials
    submitted on the "due date".
    
    Each presentation will last about 5 minutes, including setup time
    and questions (though the exact length will depend on the number
    of groups).  "Intermediate" presentations must include a brief
    description of the product and a demonstration of the working
    product.  Final presentations must include a brief description of
    the product, a brief demonstration of the product, a discussion of
    the design, and a discussion of any implementation issues that
    arose.
    
            
    Presentations must be informative (i.e., your fellow students must
    learn something from your presentation, not just be entertained)!
    
          
         
            10 Grading
    Projects  will be evaluated primarily based on
    their technical merit (i.e., aesthetic issues will only have a
    minor impact on grades).  To that end, your design and
    implementation should be: rugged (i.e., reliable, robust, and safe),
    easy to repair and enhance, easy to understand and use, and easy to
    re-use.  For example, if your project is a game that 
    needs to display scores, a good design/implementation will include
    classes that could easily be used in other games.
      
               
10.1 Presentations
      While I do not require attendance in general, I do require 
      (as a matter of courtesy/collegiality) that all
      students attend all presentations. Students who do not attend 
      all presentations will be penalized (i.e., their grade on the project
      will be significantly reduced).
      
            
               10.2 Peer Evaluations
      All students must participate in the evaluation process.
      Students who do not participate in the evaluation process
      will receive a grade of 0 for the final project.
      
      You will be provided with a form for evaluating yourself and the
      members of your group.  Your grade will be based, in part, on
      both your evaluations and the "appropriateness" of your
      evaluations (i.e., how consistent your evaluations are with my
      evaluations).  If your evaluations are significantly different
      from mine, you will be given an opportunity to justify your
      evaluations. If you can't convince me that your evaluations were
      "appropriate", your grade will be reduced accordingly.